<?php
namespace frontend\controllers;

use Yii;
use yii\helpers\BaseJson;
// use yii\caching\Cache;

/**
 * 验证控制器[短信验证，验证码验证]
 *
 * @author jois
 */
class CaptchaController extends BaseController
{

    // 短信过期时间，单位秒
    protected static $sms_duration = 600;

    /**
     * 发送短信验证码
     *
     * @param string $mobile
     */
    public function actionSendSms()
    {
        // 验证输入。
        $mobile = Yii::$app->request->post('mobile', '');
        if (! empty($mobile) && is_mobile($mobile)) {

            // 产生验证码，生成一个4位的数字验证码。
            include dirname(Yii::$app->BasePath) . '/common/services/sms.php';
            $vcode = sprintf('%06d', mt_rand(100000, 999999));

            // 调用短信接口，发送短信验证码。
            $res = \Sms::send($mobile, '您本次操作的验证码为' . $vcode . '，有效期为' . intval(self::$sms_duration / 60) . '分钟，并仅能验证一次');

            // 如果发送成功，则缓存发送的验证，等待验证
            if ($res['send']) {
                $cache = Yii::$app->cache;
                $cache->set('captcha/' . $mobile, $vcode, self::$sms_duration);
            }
            return BaseJson::encode($res);
        }
        return BaseJson::encode([
            "send" => FALSE,
            "info" => '手机号为空或者输入格式错误'
        ]);
    }
}